 | | EXPRESIONES COMPARTIDAS |
“Cada lenguaje es una tradición, cada palabra un símbolo compartido” (Borges)
Definición
Toda expresión del lenguaje, sin excepción, se puede compartir, es decir, que puede pertenecer (ser común) a varias expresiones. Una modalidad de compartición es la autocompartición: cuando una expresión se comparte en su propio contexto.
La especificación de compartición se realiza mediante expresiones genéricas.
Ejemplos
- Compartición mediante un nombre.
Las secuencias x e y comparten la expresión v.
(v = 11)
(x = (a 〈v〉 b))
(y = (〈v〉 c 〈v〉))
x // ev. (a 11 b)
y // ev. (11 c 11)
(v = 99) (se cambia v)
x // ev. (a 99 b)
(x cambia automáticamente)
y // ev. (99 c 99)
(y cambia automáticamente)
- Compartición de un elemento de una secuencia.
Se define el tercer elemento de una secuencia y siempre como el primer elemento de la secuencia x:
(x = (a b c d))
(y = (3 7 〈x\1〉 4 5))
(el tercer elemento de y es el primero de x)
y // ev. (3 7 a 4 5)
(x = (u v w)) (se cambia x)
y // ev. (3 7 u 4 5)
(y cambia automáticamente)
- Compartición mutua de elementos entre dos secuencias.
(x = (a b c 〈y\1〉 d))
(el cuarto elemento de x es el primero de y)
(y = (3 7 4 5 〈x\(x#)〉))
(el último elemento de y es el último de x)
x // ev. (a b c 3 d)
y // ev. (3 7 4 5 d)
(x/5 = 55)
(cambiamos el último elemento de x)
(y/1= 11)
(cambiamos el primer elemento de y)
x // ev. (a b c 11 55)
(x cambia automáticamente)
y // ev. (11 7 4 5 55)
(y cambia automáticamente)
- Autocompartición. Unos elementos de una secuencia se definen a partir de otros elementos de la misma secuencia.
(x = (a b 〈x\1〉 〈x\2〉 c))
(el tercer y cuarto elemento de x es el primero y el segundo, respectivamente, de la misma secuencia)
x // ev. (a b a b c)
(x\1 = u)
(cambiamos el primer elemento de x)
(x\2 = v)
(cambiamos el segundo elemento de x)
x // ev. (u v u v c)
(x cambia automáticamente)
- Autocompartición de varios elementos consecutivos.
(x = (a b c [〈x\[1…3]〉]))
(los elementos 4, 5 y 6 de x son iguales a los tres primeros)
x // ev. (a b c a b c)
(x\1 = u)
(cambiamos el primer elemento de x)
(x\2 = v)
(cambiamos el segundo elemento de x)
x // ev. (u v c u v c)
(x cambia automáticamente)
- Compartición del contenido de un conjunto.
(x = {a b c d})
(y = {u v 〈x↓〉})
(y consta de u, v y el contenido de x)
y // ev. {u v a b c d}
(x = {3 4 5 6})
(se redefine x)
y // ev. {u v 3 4 5 6}
(nuevo valor de y)
- Compartición de una selección.
(x = {1 3 5 7 9})
(y = {u v 〈x⇓(<6)〉})
(y consta de u, v y los elementos menores que 6 de x)
y // ev. {u v 1 3 5}
(x = {2 4 6 8})
(se redefine x)
y // ev. {u v 2 4}
(y cambia automáticamente)
- Compartición mediante asignación de un nombre a un elemento compartido.
(x = (a b c d))
(v = 〈x\3〉)
(v es siempre el tercer elemento de x)
(y = (3 7 v☆3))
(y consta de 3, 7 y tres elementos v)
y // ev. (3 7 c c c)
(x = (e f g h))
(se redefine x)
y // ev. (3 7 g g g)
(nuevo valor de y)
(v = 〈x\4〉)
(se redefine v)
y // ev. (3 7 d d d)
(nuevo valor de y)
Secuencia circular
Es una secuencia que “se muerde la cola”, es decir, el siguiente elemento del último es el primero. La forma general es:
〈( x\i = x\(i - i÷(x#)) )〉
Es decir, siempre se utiliza el resto de la división entre i y la longitud de la secuencia. Por ejemplo,
(x = (a b c d)
x\5 // ev. a
x\10 // ev. b
x\100 // ev. d
x\101 // ev. a
Estructuras de expresiones compartidas
Mediante la técnica de compartición, es posible definir todo tipo de estructuras. Por ejemplo, si simbolizamos una secuencia por una línea terminada en flecha, y un conjunto por un círculo, podemos especificar estructuras como las siguientes: